from datetime import date
from pathlib import Path

# 静态文件路径
STATIC_PATH = Path.joinpath(Path(__file__).parent, 'static')

# ------------------ Log module Init -------------------- #
file_path = Path.joinpath(Path(__file__).parent, 'logs')
file_path.mkdir(parents=True, exist_ok=True)
# the defualt log formater for sanic is print(sanic.log.LOGGING_CONFIG_DEFAULTS)
logfile_suffix = "middleware"

LOGGING_DIC = {
    'version': 1, 
    'disable_existing_loggers': False, 
    'loggers': {
        'sanic.root': {
            'level': 'INFO', 
            'handlers': ['console', 'logfile']
        }, 
        'sanic.error': {
            'level': 'INFO',
            'handlers': ['error_console', 'error_logfile'], 
            'propagate': True, 'qualname': 'sanic.error'
        }, 
        'sanic.access': {
            'level': 'INFO', 
            'handlers': ['access_console', 'access_logfile'], 
            'propagate': True, 
            'qualname': 'sanic.access'
        }, 
        'sanic.server': {
            'level': 'INFO',
            'handlers': ['console', 'logfile'],
            'propagate': True,
            'qualname': 'sanic.server'
        }
    },  
    'handlers': {
        'console': {
                'class': 'logging.StreamHandler', 
                'formatter': 'generic', 
        }, 
        'error_console': {
            'class': 'logging.StreamHandler', 
            'formatter': 'generic', 
        }, 
        'access_console': {
            'class': 'logging.StreamHandler', 
            'formatter': 'access', 
        },
        'logfile': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'generic',
            'filename': Path.joinpath(file_path, F"{logfile_suffix}_{date.today()}.log"),
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码，再也不用担心中文log乱码了
        },
        'error_logfile': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'generic',
            'filename': Path.joinpath(file_path, F"{logfile_suffix}-error_{date.today()}.log"),
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码，再也不用担心中文log乱码了
        },
        'access_logfile': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'access',
            'filename': Path.joinpath(file_path, F"{logfile_suffix}-access_{date.today()}.log"),
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码，再也不用担心中文log乱码了
        },
    }, 
    'formatters': {
        'generic': {
            'format': '%(asctime)s [%(process)s] [%(levelname)s] %(message)s', 
            'datefmt': '[%Y-%m-%d %H:%M:%S %z]', 
            'class': 'logging.Formatter'
        }, 
        'access': {
            'format': '%(asctime)s - (%(name)s)[%(levelname)s][%(host)s]: %(request)s %(message)s %(status)s %(byte)s', 
            'datefmt': '[%Y-%m-%d %H:%M:%S %z]', 'class': 'logging.Formatter'
        }
    }
}